// 人员管理请求
import request from '../service/service';

/**
 * 获取在场总人数
 * @param  data {Object}
 * @desc project_id: '' 项目id 必填, date：'2021-01-01' 日期 必填
 */
export function getAttendanceNumber(data) {
  return request({
    protocol: 'real_name/get_attendance_number',
    options: data
  });
}

/**
 * 获取根据年龄段分类的在场人数
 * @param  data {Object}
 * @desc project_id: '' 项目id 必填, date：'2021-01-01' 日期 必填
 */
export function getAttendanceByAge(data) {
  return request({
    protocol: 'real_name/get_attendance_by_age',
    options: data
  });
}

/**
 * 获取根据进出场状态分类的在场人数
 * @param  data {Object}
 * @desc project_id: '' 项目id 必填, date：'2021-01-01' 日期 必填
 */
export function getAttendanceByEntryAndExit(data) {
  return request({
    protocol: 'real_name/get_attendance_by_status',
    options: data
  });
}

/**
 * 获取根据省份分类的在场人数
 * @param  data {Object}
 * project_id: '' 项目id 必填, date：'2021-01-01' 日期 必填
 */
export function getAttendanceByProvince(data) {
  return request({
    protocol: 'real_name/get_attendance_by_province',
    options: data
  });
}

/**
 * 获取根据时间段分类的在场人数
 * @param  data {Object}
 * @desc project_id: '' 项目id 必填,
 * @desc begin_da：'2021-01-01' 日期 必填
 * @desc end_day: '2021-01-01' 日期 必填
 */
export function getAttendanceStatistics(data) {
  return request({
    protocol: 'real_name/get_attendance_statistics',
    options: data,
    time: 200
  });
}

/**
 * 获取根据时间段及工种分类的在场人数
 * @param  data {Object}
 * @desc project_id: '' 项目id 必填,
 * @desc begin_da：'2021-01-01' 日期 必填
 * @desc end_day: '2021-01-01' 日期 必填
 */
export function getAttendanceStatisticsByJob(data) {
  return request({
    protocol: 'real_name/get_attendance_statistics_by_job',
    options: data,
    time: 200
  });
}

/**
 * 获取根据月份分类的计划人数
 * @param  data {Object}
 * @desc project_id: '' 项目id 必填,
 * @desc year：'2021' 年份 选填
 * @desc month: '01' 月份 选填
 * 如要获取某项目所有时间段的计划，“year”和“month”不填即可；
 * 如要获取某项目某年所有的月份的计划，“month”不填即可；
 */
export function getPlanNumber(data) {
  return request({
    protocol: 'real_name/get_plan_number',
    options: data
  });
}

/**
 * 新增计划人数
 * @param  data {Object}
 * @desc project_id: '' 项目id 必填,
 * @desc year：'2021' 年份 必填
 * @desc month: '01' 月份 必填
 * @desc plan_number: '1' 计划人数 必填
 */
export function insertPlanNumber(data) {
  return request({
    protocol: 'real_name/insert_plan_number',
    options: data
  });
}

/**
 * 修改计划人数
 * @param  data {Object}
 * @desc project_id: '' 项目id 必填,
 * @desc year：'2021' 年份 必填
 * @desc month: '01' 月份 必填
 * @desc plan_number: '11' 计划人数 必填
 */
export function updatePlanNumber(data) {
  return request({
    protocol: 'real_name/update_plan_number',
    options: data
  });
}

/**
 * 删除计划人数
 * @param  data {Object}
 * @desc project_id: '' 项目id 必填,
 * @desc year：'2021' 年份 必填
 * @desc month: '01' 月份 必填
 */
export function deletePlanNumber(data) {
  return request({
    protocol: 'real_name/delete_plan_number',
    options: data
  });
}

/**
 * 获取所有工人详细信息
 * @param  data {Object}
 * @desc project_id: '' 项目id 必填,
 * @desc classification：'施工人员' 人员分类 必填
 * @desc page: '1' 页码
 * @desc limit: '10' 单页数量
 */
export function getAllWorkersInfo(data) {
  return request({
    protocol: 'real_name/get_all_workers_info',
    options: data
  });
}

/**
 * 根据关键词模糊查询工人详细信息
 * @param  data {Object}
 * @desc project_id: '' 项目id 必填,
 * @desc classification：'施工人员' 人员分类 必填
 * @desc key: '' 关键词 根据⼈员姓名或身份证模糊查询 必填
 * @desc page: '1' 页码
 * @desc limit: '10' 单页数量
 */
export function getWorkersInfoBySearch(data) {
  return request({
    protocol: 'real_name/get_workers_info_by_search',
    options: data
  });
}

/**
 * 根据时间及身份证号查询工人考勤信息
 * @param  data {Object}
 * @desc project_id: '' 项目id 必填,
 * @desc id_number：'' 身份证号 必填
 * @desc begin_da：'2021-01-01' 开始时间 必填
 * @desc end_day: '2021-01-01' 截止时间 必填
 * @desc page: '1' 页码 必填
 * @desc limit: '10' 单页数量 必填
 */
export function getWorkerAtdsById(data) {
  return request({
    protocol: 'real_name/get_worker_atds_by_id',
    options: data
  });
}

/**
 * 获取所有工人的考勤信息
 * @param  data {Object}
 * @desc project_id: '' 项目id 必填,
 * @desc date：'2021-01-01' 查询日期 必填
 * @desc page: '1' 页码 必填
 * @desc limit: '10' 单页数量 必填
 */
export function getAllAtdsList(data) {
  return request({
    protocol: 'real_name/get_all_atds_list',
    options: data
  });
}

/**
 * 根据条件查询工人的考勤信息
 * @param  data {Object}
 * @desc project_id: '' 项目id 必填,
 * @desc date：'2021-01-01' 查询日期 必填
 * @desc name: '10' 工人姓名，必填
 * @desc page: '1' 页码 必填
 * @desc limit: '10' 单页数量 必填
 */
export function getAtdsListSearch(data) {
  return request({
    protocol: 'real_name/get_atds_list',
    options: data
  });
}

/**
 * 新增证书（包含附件上传）
 * @param  data {Object}
 * @desc id_number   : '' 身份证号,
 * @desc certificate_name： 证书名
 * @desc certificate_id: 证书ID，不可重复
 * @desc skill_level: 技能等级
 * @desc issue_date: 发证日期 格式：1919-12-11 22:22:33
 * @desc certificate_authority: 发证机关
 * @desc validity_period: 有效日期 格式：1919-12-11 22:22:33
 * @desc certificate_file: /附件文件，file类型, 多个文件均使用certificate_file作为参数名
 */
export function addCertificate(data) {
  return request({
    protocol: 'certificate/add_certificate',
    options: data,
    method: 'formData',
    requestConfig: {
      headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
      }
    }
  });
}

/**
 * 修改证书信息（不包含修改附件）
 * @param  data {Object}
 * @desc certificate_uuid   : '' 证书唯一号，即证书的uuid,
 * @desc certificate_name： 证书名
 * @desc certificate_id: 证书ID，不可重复
 * @desc skill_level: 技能等级
 * @desc issue_date: 发证日期 格式：1919-12-11 22:22:33
 * @desc certificate_authority: 发证机关
 * @desc validity_period: 有效日期 格式：1919-12-11 22:22:33
 */
export function updateCertificate(data) {
  return request({
    protocol: 'certificate/update_certificate',
    options: data,
    method: 'formData',
    requestConfig: {
      headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
      }
    }
  });
}

/**
 * 分页查询人员的证书信息（不包含附件信息）
 * @param  data {Object}
 * @desc id_number : '' 身份证号,
 * @desc page : '' 页数,
 * @desc limit : '' 每页数据数量,
 */
export function getCertificate(data) {
  return request({
    protocol: 'certificate/get_certificate',
    options: data,
    method: 'formData',
    requestConfig: {
      headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
      }
    }
  });
}

/**
 * 分页查询证书的附件信息
 * @param  data {Object}
 * @desc certificate_uuid : '' 需要查询附件的证书的唯一号，即证书的uuid,
 * @desc page : '' 页数,
 * @desc limit : '' 每页数据数量,
 */
export function getCertificateFile(data) {
  return request({
    protocol: 'certificate/get_certificate_file',
    options: data,
    method: 'formData',
    requestConfig: {
      headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
      }
    }
  });
}

/**
 * 证书附件上传
 * @param  data {Object}
 * @desc certificate_uuid : '' 需要查询附件的证书的唯一号，即证书的uuid,
 * @desc certificate_file  :附件文件，file类型，多个文件使用certificate_file作为参数名
 */
export function uploadCertificateFile(data) {
  return request({
    protocol: 'certificate/upload_certificate_file',
    options: data,
    method: 'formData',
    requestConfig: {
      headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
      }
    }
  });
}

/**
 * 证书附件删除
 * @param  data {Object}
 * @desc file_uuid : /需要删除的附件的唯一号，即附件的uuid,
 */
export function deleteCertificateFile(data) {
  return request({
    protocol: 'certificate/delete_certificate_file',
    options: data,
    method: 'formData',
    requestConfig: {
      headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
      }
    }
  });
}

/**
 * 证书附件下载（直接传输二进制流）
 * @param  data {Object}
 * @desc file_uuid : /需要下载的附件的唯一号，即附件的uuid,
 */
export function downloadCertificateFile(data) {
  return request({
    protocol: 'certificate/download_certificate_file',
    options: data,
    method: 'formData',
    requestConfig: {
      headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
      }
    }
  });
}

/**
 * 查询基站数据
 * @param  data {Object}
 * @desc project_id : "", 项目ID，必填
 * @desc page : "", 页码，必填
 * @desc limit : "" 单页数量，必填
 */
export function getBaseStationList(data) {
  return request({
    protocol: 'real_name/get_base_station_info_list',
    options: data
  });
}

/**
 * 查询基站附近的人员数据
 * @param  data {Object}
 * @desc project_id : "", 项目ID，必填
 * @desc base_station_num : "", 基站编号，选填
 * @desc start_time : "2021-01-16 00:00:00", 开始时间 必填
 * @desc end_time : "2021-01-16 00:00:00", 结束时间 必填
 * @desc page : "", 页码，必填
 * @desc limit : "" 单页数量，必填
 */
export function getBaseStationPerson(data) {
  return request({
    protocol: 'real_name/get_base_station_relate_person_list',
    options: data
  });
}

/**
 * 获取项目在场人数
 * @param  data {Object}
 */
export function getPresentNumber(data = {}) {
  let url = '?';
  const len = Object.keys(data).length;
  Object.keys(data).forEach((key, index) => {
    if (!data[key]) return;
    url += `${key}=${data[key]}${index >= len - 1 ? '' : '&'}`;
  });
  return request({
    protocol: 'real_name/getPresentNumber' + url,
    options: data
  });
}

/**
 * 获取人员信息
 */
export function getPersonList(data) {
  return request({
    protocol: 'bus/person/findPage',
    options: data,
    method: 'get'
  });
}

/**
 * 水务人员信息导入
 */
export function uploadPersonExcel(data) {
  const { projectId } = data;
  return request({
    protocol: 'bus/person/uploadExcel?projectId=' + projectId,
    options: data.file,
    method: 'formdata',
    requestConfig: {
      headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
      }
    }
  });
}

/**
 * 水务人员年龄统计
 */
export function getAgeStatistic(data) {
  return request({
    protocol: 'bus/person/ageStatistic',
    options: data,
    method: 'get'
  });
}

/**
 * 水务人员籍贯统计
 */
export function getNativePlaceStatistic(data) {
  return request({
    protocol: 'bus/person/nativePlaceStatistic',
    options: data,
    method: 'get'
  });
}

/**
 * 水务人员班组统计
 */
export function getTeamNameStatistic(data) {
  return request({
    protocol: 'bus/person/teamNameStatistic',
    options: data,
    method: 'get'
  });
}

/**
 * 水务人员新增
 */
export function addPerson(data) {
  return request({
    protocol: 'bus/person/create',
    options: data,
    method: 'post'
  });
}

/**
 * 水务人员删除
 */
export function delPerson(data) {
  return request({
    protocol: 'bus/person/deleteByIds',
    options: data,
    method: 'delete'
  });
}

/**
 * 水务人员修改
 */
export function updatePerson(data) {
  return request({
    protocol: 'bus/person/update',
    options: data,
    method: 'post'
  });
}

/**
 * 获取水务人员导入模版
 */
export function getWaterPersonTmp(data) {
  return request({
    protocol: 'bus/person/getUploadTemplate',
    options: data,
    method: 'get'
  });
}
